package com.qms.qep.service;

import java.util.List;
import java.util.Map;
import com.qms.qep.domain.InspectionData;
import com.qms.qep.domain.dto.InspectionDataDTO;

/**
 * 检验数据Service接口
 * 
 * @author qms
 * @date 2025-05-14
 */
public interface IInspectionDataService 
{
    /**
     * 查询检验数据
     * 
     * @param id 检验数据主键
     * @return 检验数据
     */
    public InspectionData selectInspectionDataById(Integer id);

    /**
     * 查询检验数据列表
     * 
     * @param inspectionData 检验数据
     * @return 检验数据集合
     */
    public List<InspectionData> selectInspectionDataList(InspectionData inspectionData);
    
    /**
     * 查询检验数据DTO列表
     * 
     * @param inspectionData 检验数据
     * @return 检验数据DTO集合
     */
    public List<InspectionDataDTO> selectInspectionDataDTOList(InspectionData inspectionData);
    
    /**
     * 根据任务ID查询检验数据
     * 
     * @param taskId 任务ID
     * @return 检验数据集合
     */
    public List<InspectionData> selectInspectionDataByTaskId(Integer taskId);
    
    /**
     * 根据任务ID查询检验数据DTO
     * 
     * @param taskId 任务ID
     * @return 检验数据DTO集合
     */
    public List<InspectionDataDTO> selectInspectionDataDTOByTaskId(Integer taskId);

    /**
     * 新增检验数据
     * 
     * @param inspectionData 检验数据
     * @return 结果
     */
    public int insertInspectionData(InspectionData inspectionData);
    
    /**
     * 批量新增检验数据
     * 
     * @param inspectionDataList 检验数据列表
     * @return 结果
     */
    public int batchInsertInspectionData(List<InspectionData> inspectionDataList);

    /**
     * 修改检验数据
     * 
     * @param inspectionData 检验数据
     * @return 结果
     */
    public int updateInspectionData(InspectionData inspectionData);

    /**
     * 批量删除检验数据
     * 
     * @param ids 需要删除的检验数据主键集合
     * @return 结果
     */
    public int deleteInspectionDataByIds(Integer[] ids);

    /**
     * 删除检验数据信息
     * 
     * @param id 检验数据主键
     * @return 结果
     */
    public int deleteInspectionDataById(Integer id);
    
    /**
     * 根据任务ID删除检验数据
     * 
     * @param taskId 任务ID
     * @return 结果
     */
    public int deleteInspectionDataByTaskId(Integer taskId);
    
    /**
     * 导入Excel检验数据
     * 
     * @param dataList 数据列表
     * @param taskId 任务ID
     * @param updateSupport 是否更新已存在数据
     * @param operName 操作人
     * @return 结果
     */
    public String importData(List<InspectionData> dataList, Integer taskId, Boolean updateSupport, String operName);
    
    /**
     * 根据ID列表查询检验数据
     * 
     * @param ids 检验数据ID列表
     * @return 检验数据集合
     */
    public List<InspectionData> selectInspectionDataByIds(List<Integer> ids);

    /**
     * 根据任务ID获取检验参数列表及其标准值
     * 
     * @param taskId 任务ID
     * @return 参数列表及标准值
     */
    public List<Map<String, Object>> getParametersByTaskId(Long taskId);
} 